<?php
function envoiAchat($logged, $nom, $prenom, $mail, $adresse, $codepostal, $ville, $pays, $ID_produit, $note){
    global $bdd;

    if($logged){
        $req = $bdd->prepare("INSERT INTO achat(ID_produit, nom, prenom, mail, adresse, codepostal, ville, pays, ID_membre) VALUES(:ID_produit, :nom, :prenom, :mail, :adresse, :codepostal, :ville, :pays, :ID_membre)");
        $req->execute(array('nom' => $nom, 'ID_produit' => $ID_produit, 'prenom' => $prenom, 'mail' => $mail,
            'adresse' => $adresse, 'codepostal' => $codepostal, 'ville' => $ville, 'pays' => $pays,
            'ID_membre' => $_SESSION['ID'])) or die(print_r($req->errorInfo()));
        $req->closeCursor();
        $req = $bdd->prepare('INSERT INTO note VALUES (?)');
        $req->execute(array($note)) or die(print_r($req->errorInfo()));
        $req->closeCursor();
    }
    else {
        $req = $bdd->prepare("INSERT INTO achat(ID_produit, nom, prenom, mail, adresse, codepostal, ville, pays) VALUES(:ID_produit, :nom, :prenom, :mail, :adresse, :codepostal, :ville, :pays)");
        $req->execute(array('nom' => $nom, 'ID_produit' => $ID_produit, 'prenom' => $prenom, 'mail' => $mail,
            'adresse' => $adresse, 'codepostal' => $codepostal, 'ville' => $ville, 'pays' => $pays)) or die(print_r($req->errorInfo()));
        $req->closeCursor();
        $req = $bdd->prepare('INSERT INTO note VALUES (?)');
        $req->execute(array($note)) or die(print_r($req->errorInfo()));
        $req->closeCursor();
    }
}

function modifyNbAchat($id){
    global $bdd;

    $req = $bdd->prepare('SELECT achat FROM produits WHERE ID = ? LIMIT 1');
    $req->execute(array($id))  or die(print_r($req->errorInfo()));
    while ($donnees = $req->fetch())
    {
        $newAchat = $donnees['achat']+1;
        $req2 = $bdd->prepare('UPDATE produits SET achat = :newAchat WHERE ID = :ID');
        $req2->execute(array('newAchat' => $newAchat, 'ID' => $id))  or die(print_r($req2->errorInfo()));
        $req2->closeCursor();
    }
    $req->closeCursor();
}

function ajoutCategorie($nom){
    global $bdd;
    $req = $bdd->prepare('INSERT INTO categorie(nom) VALUE (?)');
    $req->execute(array($nom)) or die(print_r($req->errorInfo()));
    return '';
}

function deleteCategorie($nom){
    global $bdd;
    $req = $bdd->prepare('DELETE FROM categorie WHERE nom=?');
    $req->execute(array($nom)) or die(print_r($req->errorInfo()));
    return '';
}

function ajoutProduit($titre, $auteur, $infos, $website, $image, $categorie, $prix){
    global $bdd;

    $req = $bdd->prepare('INSERT INTO produits (`titre`, `auteur`, `website`, `infos`, `image`, `categorie`, `ajout`, `prix`) VALUES (:titre, :auteur, :website, :infos, :image, :categorie, NOW(), :prix)');
    $req->execute(array('titre' => $titre, 'auteur' => $auteur, 'website' => $website, 'infos' => $infos, 'image' => $image,
        'categorie' => $categorie, 'prix' => $prix)) or die(print_r($req->errorInfo()));
    $req->closeCursor();
    return '';
}

function updateProduit($id, $titre, $auteur, $website, $infos, $categorie, $image, $achat, $prix){
    global $bdd;

    $req = $bdd->prepare('UPDATE produits SET titre = :titre, auteur = :auteur, website = :website, infos = :infos, categorie = :categorie, image = :image, achat = :achat, prix = :prix WHERE ID = :id');
    $req->execute(array('titre' => $titre, 'auteur' => $auteur, 'website' => $website, 'infos' => $infos,
        'categorie' => $categorie, 'image' => $image, 'achat' => $achat, 'id' => $id, 'prix' => $prix)) or die(print_r($req->errorInfo()));
    $req->closeCursor();
    return '';
}

function deleteAchat($id){
    global $bdd;

    $req = $bdd->prepare('DELETE FROM achat WHERE ID=?');
    $req->execute(array($id)) or die(print_r($req->errorInfo()));
    $req->closeCursor();
}

function deleteProduit($id){
    global $bdd;

    $req = $bdd->prepare('DELETE FROM produits WHERE ID=?');
    $req->execute(array($id)) or die(print_r($req->errorInfo()));
    $req->closeCursor();
    $req = $bdd->prepare('DELETE FROM achat WHERE ID_produit=?');
    $req->execute(array($id)) or die(print_r($req->errorInfo()));
    $req->closeCursor();
}

function getAchat($id){
    global $bdd;
    $req = $bdd->prepare('SELECT * FROM achat INNER JOIN produits ON achat.ID_produit = produits.ID WHERE achat.ID=?');
    $req->execute(array($id)) or die(print_r($req->errorInfo()));
    $result = $req->fetchAll();
    return $result;
}

function getNombreAchats(){
    global $bdd;

    $req = $bdd->query('SELECT COUNT(*) AS nbAchats FROM `achat`') or die(print_r($bdd->errorInfo()));
    $result = $req->fetch();
    $return = $result['nbAchats'];
    $req->closeCursor();
    return $return;
}

function getAchats($start, $nbProduitsPage){
    global $bdd;

    $req = $bdd->query('SELECT achat.ID, achat.ID_produit, achat.nom, achat.prenom, achat.ID_membre,
        produits.titre FROM achat INNER JOIN produits ON achat.ID_produit = produits.ID
        ORDER BY achat.ID LIMIT '.$start.','.$nbProduitsPage) or die(print_r($bdd->errorInfo()));
    $resultcat = $req->fetchAll();
    $req->closeCursor();

    if(!$resultcat)
    {
        return '';
    }
    else {return $resultcat;}
}

function getCategories($cat, $start, $nbProduitsPage){
    global $bdd;
    
    if($cat == 'new'){$req = $bdd->query('SELECT *, DATE_FORMAT(ajout, \'%d/%m/%Y\') AS date FROM produits ORDER BY ajout DESC LIMIT '.$start.','.$nbProduitsPage) or die(print_r($bdd->errorInfo()));
    $arrayProduit = $req->fetchAll();
    $req->closeCursor();
    return $arrayProduit;
    }

    $req = $bdd->prepare('SELECT * FROM produits WHERE categorie = ? ORDER BY ajout DESC LIMIT '.$start.','.$nbProduitsPage);
    $req->execute(array($cat)) or die(print_r($req->errorInfo()));
    $resultcat = $req->fetchAll();
    $req->closeCursor();

    if(!$resultcat)
    {
        return '';
    }
    else {return $resultcat;}
}

function getFiche($id){
    global $bdd;
    
    $id = (int) $id;    if($id < 1){return '';}
    $req = $bdd->prepare('SELECT *, DATE_FORMAT(ajout, \'%d/%m/%Y à %Hh%i\') AS ajout_date FROM produits WHERE ID = ? LIMIT 0,1');
    $req->execute(array($id)) or die(print_r($req->errorInfo()));
    $temp = $req->fetchAll();
    return $temp;
}


function getListCategories(){
    global $bdd;
    $req = $bdd->query('SELECT * FROM categorie ORDER BY nom') or die(print_r($bdd->errorInfo()));
    $categoriesArray = $req->fetchAll();
    $req->closeCursor();
    return $categoriesArray;
}
function getListCategoriesLimit($start, $nombre){
    global $bdd;
    $req = $bdd->query('SELECT * FROM categorie ORDER BY nom LIMIT '.$start.','.$nombre) or die(print_r($bdd->errorInfo()));
    $categoriesArray = $req->fetchAll();
    $req->closeCursor();
    return $categoriesArray;
}


function getNombreCategories(){
    global $bdd;

    $req = $bdd->query('SELECT COUNT(*) AS nbCategories FROM `categorie`') or die(print_r($bdd->errorInfo()));
    $result = $req->fetch();
    $return = $result['nbCategories'];
    $req->closeCursor();
    return $return;
}

function getNombreProduit(){
    global $bdd;
    
    $req = $bdd->query('SELECT COUNT(*) AS nbProduits FROM `produits`') or die(print_r($bdd->errorInfo()));
    $result = $req->fetch();
    $return = $result['nbProduits'];
    $req->closeCursor();
    return $return;
}

function getNombreProduitAlpha($lettre){
    global $bdd;

    $lettre = htmlspecialchars($lettre);
    $req = $bdd->query('SELECT COUNT(*) AS nbProduits FROM `produits` WHERE `titre` REGEXP "^'.$lettre.'" ') or die(print_r($bdd->errorInfo()));
    $result = $req->fetch();
    $return = $result['nbProduits'];
    $req->closeCursor();
    return $return;
}

function getNombreProduitCat($categorie){
    global $bdd;
    
    $req = $bdd->prepare('SELECT COUNT(*) AS nbProduits FROM `produits` WHERE categorie = ?');
    $req->execute(array($categorie)) or die(print_r($req->errorInfo()));
    $result = $req->fetch();
    $return = $result['nbProduits'];
    $req->closeCursor();
    return $return;
}

function getProduits($start, $nbProduitsPage){
    global $bdd;

    $req = $bdd->query('SELECT * FROM produits ORDER BY titre LIMIT '.$start.','.$nbProduitsPage) or die(print_r($bdd->errorInfo()));
    $resultcat = $req->fetchAll();
    $req->closeCursor();

    if(!$resultcat)
    {
        return '';
    }
    else {return $resultcat;}
}

function getProduitsByID($start, $nbProduitsPage){
    global $bdd;

    $req = $bdd->query('SELECT * FROM produits ORDER BY ID DESC LIMIT '.$start.','.$nbProduitsPage) or die(print_r($bdd->errorInfo()));
    $resultcat = $req->fetchAll();
    $req->closeCursor();

    if(!$resultcat)
    {
        return '';
    }
    else {return $resultcat;}
}

function getProduitsAlpha($lettre, $start, $nbProduitsPage){
    global $bdd;

    $lettre = htmlspecialchars($lettre);
    $req = $bdd->query('SELECT * FROM produits WHERE `titre` REGEXP "^'.$lettre.'" ORDER BY titre DESC LIMIT '.$start.','.$nbProduitsPage) or die(print_r($bdd->errorInfo()));
    $resultcat = $req->fetchAll();
    $req->closeCursor();

    if(!$resultcat)
    {
        return '';
    }
    else {return $resultcat;}
}

function getTop($top)
{
    global $bdd; $top = (int) $top;
    if($top > 0){
        $req = $bdd->query('SELECT * FROM produits ORDER BY achat DESC LIMIT 0,'.$top) or die(print_r($bdd->errorInfo()));
        $produitsArray = $req->fetchAll();
        $req->closeCursor();
        return $produitsArray;
    }
    else{return array(); }
}


function selectInfosMembre(){
// Si le membre est connecté, on va récupérer ses infos pour remplir automatiquement les champs du formulaire
    global $bdd;
    if (isset($_SESSION['ID'])) {
        $req = $bdd->prepare('SELECT * FROM membres WHERE ID = ? ');
        $req->execute(array($_SESSION['ID'])) or die(print_r($req->errorInfo()));
        $membre = $req->fetchAll();
        $req->closeCursor();
        return $membre;
    }
    return array('');
}